# -*- coding: utf-8 -*-

from opcua import Server

# 初始化服务器
server = Server()
server.set_endpoint("opc.tcp://0.0.0.0:4840")  # 监听所有网络接口，端口4840

# 设置服务器名称
server.set_server_name("Python OPC UA Test Server")

# 创建命名空间
uri = "http://example.org/opcua/server"
idx = server.register_namespace(uri)

# 打印idx
print("命名空间索引：", idx)

# 获取根节点
objects = server.get_objects_node()

# 添加一个文件夹节点
my_folder = objects.add_folder(idx, "MyCustomFolder")

# 添加变量节点（可读写）
var_temp = my_folder.add_variable(idx, "Temperature", 25.0)
print(f"Temperature NodeId: {var_temp.nodeid}") 
var_pressure = my_folder.add_variable(idx, "Pressure", 1013.25)
var_status = my_folder.add_variable(idx, "Status", "Running")

# 设置变量为可写
var_temp.set_writable()
var_pressure.set_writable()
var_status.set_writable()

# 启动服务器
try:
    print("OPC UA 服务器已启动，地址：opc.tcp://localhost:4840")
    server.start()
    while True:
        # 模拟动态数据变化（可选）
        import time
        current_temp = var_temp.get_value()
        var_temp.set_value(current_temp + 1)
        time.sleep(1)
finally:
    server.stop()